const bcrypt = require('bcryptjs')

const db = require('../db/index')


// 获取用户基本信息handler
exports.getUserInfo = (req, res) => {
    // 1. 获取数据
    const username = req.query.username
    console.log('username:', username)

    // 2. 校验数据，通过joi和express-joi中间件加你测

    // 3. 判断用户是否存在
    const select_sql = `SELECT * FROM USERS WHERE username=?`
    db.query(select_sql, username, (err, results) => {
        if(err) return res.cc(err)
        if(results.length == 0) return res.cc('未注册的用户')

        // 4. 返回信息
        res.send({
            status: 0,
            userinfo: results[0]
        })
    })
}


// 更新用户基本信息handler
exports.updateUserInfo = (req, res) => {
    // 1. 获取数据，规定只能更新id，nikname，email三个字段
    const user = req.body

    // 2. 校验数据，根据joi模块和express-joi中间件实现

    // 3. 判断用户是否存在
    const select_sql = `SELECT * FROM USERS WHERE username=?`
    db.query(select_sql, user.username, (err, results) => {
        if(err) return res.cc(err)
        if(results.length == 0) return res.cc('不存在的用户')

        // 判断id是否重复
        const select_sql = `SELECT id FROM USERS`
        db.query(select_sql, (err, results) => {
            if(err) return res.cc(err)
            // console.log('id:', results)
            // throw new Error('ting')
            // results.forEach((item, index, self) => {
            //     if(item.id == user.id) return res.cc('id已存在')
            // })
            for(var i=0; i < results.length; i++) {
                if (results[i].id == user.id) return res.cc('该id已经存在')
            }

            // 4. 更新对应数据
            const update_sql = `UPDATE USERS SET ? WHERE username=?`
            db.query(update_sql, [user, user.username], (err, results) => {
                if(err) return res.cc(err)

                // 5. 返回结果
                if(results.affectedRows != 1) return res.cc('更新失败')
                res.send({
                    stauts: 0,
                    msg: '更新成功'
                })
            })
        })         
    })
    
}


// 重置密码handler
exports.resetPassword = (req, res) => {
    // 1. 接收参数
    const user = req.body

    // 2. 校验参数

    // 3. 查询用户
    const select_sql = `SELECT * FROM USERS WHERE username=?`
    db.query(select_sql, user.username, (err, results) => {
        if(err) return res.cc(err)
        if(results.length == 0) return res.cc('不存在的用户')

        // 4. 加密新密码
        const new_password = bcrypt.hashSync(user.new_password, 10)

        // 5. 更新密码返回结果
        const update_sql = `UPDATE USERS SET password=? where username=?`
        db.query(update_sql, [new_password, user.username], (err, results) => {
            if(err) return res.cc(err)
            if(results.affectedRows != 1) return res.cc('更新失败')
            res.send({
                status: 0,
                msg: '更新密码成功'
            })
        })
    })
}


// 更新用户头像handler
exports.updateAvatar = (req, res) => {
    // 1. 获取参数
    const user = req.body

    // 2. 校验参数
    // 3. 判断用户是否存在
    const select_sql = `SELECT user_pic FROM USERS WHERE username=?`
    db.query(select_sql, user.username, (err, results) => {
        if(err) return res.cc(err)
        if(results.length == 0) return res.cc('不存在的用户')

        // 4. 更新头像返回结果
        const update_sql = 'UPDATE USERS SET user_pic=? where username=?'
        db.query(update_sql, [user.user_pic, user.username], (err, results) => {
            if(err) return res.cc(err)
            if(results.affectedRows != 1) return res.cc('更新头像失败')

            res.send({
                status: 0,
                msg: '更新头像成功',
                data: 1
            })
        })
    })
    
}